package com.mazaiting.redeye.utils

import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestListener
import com.mazaiting.redeye.R

/**
 * Glide加载图片工具类
 * Created by mazaiting on 2018/4/24.
 */
class GlideUtil private constructor() {

    companion object {
        private var sGlideUtil: GlideUtil? = null

        /**
         * 单例
         * @return 当前类对象
         */
        val instance: GlideUtil
            get() {
                if (null == sGlideUtil) {
                    synchronized(GlideUtil::class.java) {
                        if (null == sGlideUtil) {
                            sGlideUtil = GlideUtil()
                        }
                    }
                }
                return sGlideUtil!!
            }
    }

    /**
     * 加载图片
     * @param activity 显示图片的Activity
     * @param imgPath 图片路径
     * @param imageView 图片显示控件
     */
    fun loadImage(activity: AppCompatActivity, imgPath: String, imageView: ImageView) {
        this.loadImage(activity, imgPath, imageView, null)
    }

    /**
     * 加载图片
     * @param activity 显示图片的Activity
     * @param imgPath 图片路径
     * @param imageView 图片显示控件
     * @param listener 加载监听
     */
    private fun loadImage(
        activity: AppCompatActivity,
        imgPath: String,
        imageView: ImageView,
        listener: RequestListener<Drawable>?
    ) {
        // 挂载界面
        Glide.with(activity)
            // 加载路径
            .load(imgPath)
            // 占位图
            .placeholder(com.mazaiting.easy.R.drawable.loading_easy)
            // 异常图片
            .error(R.mipmap.ic_launcher)
            // 当 URL 为空时设置
//            .fallback(ColorDrawable(Color.GRAY))
            .fallback(R.mipmap.ic_launcher)
            // 加载监听
            .listener(listener)
            // 目标控件
            .into(imageView)
    }

}
